package org.easy.tool.common;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author Valley
 * Created by Valley on 2023/8/29 13:51
 */
public class NumUtil {

    /**
     * 功能：保留3位数小数
     */
    public static double save3Point(double origin) {
        DecimalFormat decimalFormat = new DecimalFormat("#.000");
        String s = decimalFormat.format(origin);
        return Double.parseDouble(s);
    }

    /**
     * 功能：将小数转换为指定位数的百分数小数
     */
    public static String percentPoint(double origin, int len) {
        NumberFormat format = NumberFormat.getPercentInstance();
        format.setMaximumFractionDigits(len);
        return format.format(origin);
    }

    /**
     * 功能：获取最大值和最小值间的数字列表
     */
    public static List<Integer> numList(int min, int max) {
        return Stream.iterate(min, n -> n + 1).limit(max - min).collect(Collectors.toList());
    }

    /**
     * 功能：获取数字列表中的最大值
     */
    public static Object max(List list) {
        return Collections.max(list);
    }

    /**
     * 功能：获取数字列表中的最小值
     */
    public static Object min(List list) {
        return Collections.min(list);
    }

    /**
     * 功能：将数字列表从小到大排序
     */
    public static <T> List<T> sorted(List<T> list) {
        return list.stream().sorted()
                .collect(Collectors.toList());
    }

    /**
     * 功能：将数字列表从小到大排序
     */
    public static <T> List<T> reverse(List<T> list) {
        return list.stream().sorted((Comparator<? super T>) Comparator.reverseOrder())
                .collect(Collectors.toList());
    }

    public static int parseInt(String numStr){
        return Integer.parseInt(numStr);
    }


}
